#ifndef __SYLAR_MACRO_H__
#define __SYLAR_MACRO_H__

#include <string.h>
#include <assert.h>
#include "util.h"

// 断言，断言失败时输出函数栈信息
#define SYLAR_ASSERT(x) \
  if(!(x)) { \
    SYLAR_LOG_ERROR(SYLAR_LOG_ROOT()) << "ASSERTION: " #x \
      << "\nbacktrace:\n" \
      << sylar::BacktraceToString(100, 2, "    "); \
    assert(x); \
  }

// w 为用户输入参数，主要为字符串类型
#define SYLAR_ASSERT_INFO(x, w) \
  if(!(x)) { \
    SYLAR_LOG_ERROR(SYLAR_LOG_ROOT()) << "ASSERTION: " #x \
      << "\n" << w \
      << "\nbacktrace:\n" \
      << sylar::BacktraceToString(100, 2, "    "); \
    assert(x); \
  }

#endif
